home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESFUNCS / OBJFLCHG.C < prev    next >
C/C++ Source or Header  |  1992-03-27  |  1KB  |  49 lines

  1. /**************************************************************************
  2.  * OBJFLCHG.C - Change object options, with optional redraw.
  3.  *************************************************************************/
  4.  
  5. #include "gemfast.h"
  6.  
  7. #ifndef NULL
  8.   #define NULL 0L
  9. #endif
  10.  
  11. void obj_flchange(ptree, object, newflags, drawflag, optional_clip)
  12.     register OBJECT *ptree;
  13.     int             object;
  14.     int             newflags;
  15.     int             drawflag;
  16.     GRECT           *optional_clip; // present only if drawflag==OBJ_CLIPDRAW
  17. {
  18.     GRECT           clip_rect;
  19.     
  20. /*
  21.  * check the newflags value. if the high bit is set, AND the newflags
  22.  * with the current options, else OR them.
  23.  */
  24.  
  25.     if (newflags & 0x8000) {
  26.         ptree[object].ob_flags &= newflags;
  27.     }
  28.     else {
  29.         ptree[object].ob_flags |= newflags;
  30.     }
  31.  
  32. /* 
  33.  * if drawflag is true, we need to do a redraw starting at the changed
  34.  * object's tree root (this is in case the HIDETREE flag is being changed),
  35.  * but the redraw must be clipped by the object we're trying to update.
  36.  * if the drawflag indicates a clipping rectangle was passed, the object's
  37.  * rectangle is clipped to it.
  38.  */
  39.  
  40.     if (drawflag) {
  41.         obj_clcalc(ptree, object, &clip_rect, NULL);
  42.         if (drawflag == OBJ_CLIPDRAW) {
  43.             rc_intersect(optional_clip, &clip_rect);
  44.         }
  45.         objc_draw(ptree, R_TREE, MAX_DEPTH, clip_rect);
  46.     }
  47. }
  48.  
  49.